<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>3_创建属性</title>
  </head>
  <body>
    <script type="text/javascript">
      // 直接在一个对象上定义一个新属性，或修改其现有属性，并返回此对象。

      const object1 = {};

      let bValue = 38;
      Object.defineProperty(object1, "property1", {
        get() {},
        set(newValue) {
          bValue = newValue;
        },
        enumerable: true,
        configurable: true,
      });

      o.b; // 38
      // 'b' 属性存在于对象 o 中，其值为 38。
      // o.b 的值现在始终与 bValue 相同，除非重新定义了 o.b。

      // 数据描述符和访问器描述符不能混合使用
      Object.defineProperty(o, "conflict", {
        value: 0x9f91102,
        get() {
          return 0xdeadbeef;
        },
      });
      // 抛出错误 TypeError: value appears only in data descriptors, get appears only in accessor descriptors
    </script>
  </body>
</html>
